package com.mingqijia.gassafety.statistics.service;

import com.mingqijia.gassafety.db.entity.vo.PlatformBrandDetailResp;
import com.mingqijia.gassafety.db.entity.vo.PlatformEquipmentResp;
import com.mingqijia.gassafety.shared.utils.commonUtils.PageUtil;
import com.mingqijia.gassafety.statistics.request.ScreenCompanyManageReq;
import com.mingqijia.gassafety.statistics.request.ScreenStatisticsAreaReq;
import com.mingqijia.gassafety.statistics.request.ScreenStatisticsMOrGReq;
import com.mingqijia.gassafety.statistics.request.ScreenStatisticsReq;
import com.mingqijia.gassafety.statistics.response.*;

import java.util.List;

public interface ScreenStatisticsService {

    /**
     * 平台应用情况
     * @param req
     * @return
     */
    PlatformApplySituationResponse platformApply (ScreenStatisticsReq req);

    /**
     * 地图数据列表
     * @param req
     * @return
     */
    List<PlatformApplyListResponse> platformApplyList();

    /**
     * 集团查询区域地图数据列表
     * @return
     */
    List<PlatformApplyListResponse> platformAreaList();

    /**
     * 弹出层
     * @param req
     * @return
     */
    PlatformPopupResponse platformPopop(ScreenStatisticsReq req);

    /**
     * 集团区域弹出层
     * @param req
     * @return
     */
    PlatformPopupResponse platformAreaPopop(ScreenStatisticsAreaReq req);

    /**
     * 平台品牌厂家
     * @param req
     * @return
     */
    List<PlatformBrandDetailResp> platformBrand(ScreenStatisticsReq req);

    /**
     * 集团平台品牌厂家
     * @return
     */
    List<PlatformBrandDetailResp> groupPlatformBrand();

    /**
     * 平台设备品类
     * @param req
     * @return
     */
    List<PlatformEquipmentResp> platformEquipment(ScreenStatisticsReq req);

    /**
     * 报警器+智慧厨房前5条告警数据
     * @param req
     * @return
     */
    List<PlatformAlarmDataResp> platformAlarmData(ScreenStatisticsReq req);

    /**
     * 截止2024年发生的报警情况
     * @param req
     * @return
     */
    AlarmSituationResp platformAlarmSituation();

    /**
     * 区域截止2024年发生的报警情况
     * @return
     */
    PlatformAlarmSituationResp areaAlarmSituation();

    /**
     * 各区域报警设备情况每月的饼图
     * @return
     */
    AraeAlarmDeviceMonthResp araeAlarmDeviceMonth(ScreenStatisticsMOrGReq req);

    /**
     * 各企业报警设备情况每月的饼图
     * @return
     */
    CompanyAlarmDeviceResp companyAlarmDevicePie();

    /**
     * 各区域报警设备情况每天的柱状图
     * @return
     */
    AraeAlarmDeviceDayResp araeAlarmDeviceDay();

    /**
     * 各企业报警设备情况每天的柱状图
     * @return
     */
    CompanyAlarmDeviceHistogramResp companyAlarmDeviceHistogram();

    /**
     * 本月告警处理情况
     * @return
     */
    List<AraeAlarmDisposeResp> araeAlarmDispose();

    /**
     * 企业本月告警处理情况
     * @return
     */
    List<CompanyAlarmDisposeResp> companyAlarmDispose();

    /**
     * 区域状态
     * @return
     */
    List<AraeStateResp> araeState();

    /**
     * 企业状态
     * @return
     */
    List<CompanyStateResp> companyState();

    /**
     * 企业管理
     * @return
     */
    PageUtil<PlatformCompanyManageResp> companyManage(ScreenCompanyManageReq req);

    /**
     * 设备推广前5企业
     * @return
     */
    DeviceSpreadResp deviceSpread(ScreenStatisticsReq req);

    /**
     * 设备故障统计接口
     * @param req
     * @return
     */
    DeviceBrokenDataResp deviceBrokenData(ScreenStatisticsReq req);

    /**
     * 故障设备情况
     */
    BrokenDeviceSituationResp brokenDeviceSituation();

}
